#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
typedef long long LL;
const LL N = 2e5 + 10, INF = 0x3f3f3f3f, mod = 1e9 + 7;
LL a[N], s[N], sum[N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
// LL t;
// cin >> t;
// while (t--)
// {
LL n, k;
cin >> n >> k;
map<int, set<int>> mp[2];
for (LL i = 1; i <= n; i++)
{
cin >> a[i];
s[i] = (s[i - 1] ^ a[i]);
sum[i] = sum[i - 1] + a[i];
if (i & 1) mp[1][s[i]].insert(i);
else mp[0][s[i]].insert(i);
}
for (LL i = 1; i <= k; i++)
{
LL l, r;
cin >> l >> r;
LL res = (s[r] ^ s[l - 1]);
if (res != 0)
{
cout << -1;
}
else
{
if (r - l + 1 == 2)
{
if (a[l] || a[r]) cout << -1;
else cout << 0;
}
else
{
if (sum[r] - sum[l - 1] == 0) cout << 0;
else
{
// cout << "*";
if ((r - l + 1) & 1) cout << 1;
else
{
if (!a[l] || !a[r]) cout << 1;
else
{
int k = (l & 1);
if (mp[k].count(s[l - 1]))
{
auto pos = mp[k][s[l - 1]].upper_bound(l);
// cout << pos - mp[k].begin() << " ";
if (pos == mp[k][s[l - 1]].end()) cout << -1;
else if (*pos < r) cout << 2;
else cout << -1;
}
else cout << -1;
}
}
}
}
}
cout << endl;
}
// cout << endl;
// }
return 0;
}
1450. Number of Students Doing Homework at a Given Time | 700. Search in a Binary Search Tree |
590. N-ary Tree Postorder Traversal | 589. N-ary Tree Preorder Traversal |
1299. Replace Elements with Greatest Element on Right Side | 1768. Merge Strings Alternately |
561. Array Partition I | 1374. Generate a String With Characters That Have Odd Counts |
1822. Sign of the Product of an Array | 1464. Maximum Product of Two Elements in an Array |
1323. Maximum 69 Number | 832. Flipping an Image |
1295. Find Numbers with Even Number of Digits | 1704. Determine if String Halves Are Alike |
1732. Find the Highest Altitude | 709. To Lower Case |
1688. Count of Matches in Tournament | 1684. Count the Number of Consistent Strings |
1588. Sum of All Odd Length Subarrays | 1662. Check If Two String Arrays are Equivalent |
1832. Check if the Sentence Is Pangram | 1678. Goal Parser Interpretation |
1389. Create Target Array in the Given Order | 1313. Decompress Run-Length Encoded List |
1281. Subtract the Product and Sum of Digits of an Integer | 1342. Number of Steps to Reduce a Number to Zero |
1528. Shuffle String | 1365. How Many Numbers Are Smaller Than the Current Number |
771. Jewels and Stones | 1512. Number of Good Pairs |